package mya.mes.mdc.logic.plc;

import mya.common.jpa.context.ServiceContext;
import mya.mes.mdc.local.plc.PlcTagDefService;
import mya.mes.mdc.logic.alarm.tag.AlarmTypeUpdater;
import mya.mes.mdc.logic.data.tag.MdcDataTypeUpdater;
import mya.mes.mdc.logic.status.tag.StatusTypeUpdater;
import mya.mes.mdc.logic.tag.PlcTagCache;
import mya.mes.mdc.logic.tag2.ExcelData;
import mya.mes.mdc.logic.tag2.ExcelParse;
import mya.mes.mdc.share.api.MdcModule;
import mya.mes.mdc.share.vo.MdcOptions;


public class PlcTagDefServiceImpl implements PlcTagDefService {
    @Override
    public void updateTags(ServiceContext context) throws Exception {
        ExcelParse excelParse = new ExcelParse();

        MdcOptions mdcOptions = MdcModule.getInstance().getMdcOptions();

        ExcelData excelData = excelParse.parse(mdcOptions.EXCEL_FILE_NAME);

        AlarmTypeUpdater alarmTypeUpdater = new AlarmTypeUpdater();

        alarmTypeUpdater.update(context, excelData.tagAlarmDefList);

        if (excelData.tagStatusDefList != null) {
            StatusTypeUpdater statusTypeUpdater = new StatusTypeUpdater();

            statusTypeUpdater.update(context, excelData.tagStatusDefList);
        }

        MdcDataTypeUpdater mdcDataUpdater = new MdcDataTypeUpdater();

        mdcDataUpdater.update(context, excelData.tagDataDefList);


        context.em.flush();

        PlcTagCache.getInstance().updateCache(context);
    }
}
